package com.lhj.xxsc.cart.vo;

/**
 * @author 罗惠江
 * @version 1.0
 * @email 1511619294@qq.com
 * @date 2020/12/30 13:34
 */

import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.util.List;

/**
 * 购物车
 * 自定义get方法，保证数据正确
 */
public class CartVo {
	/**
	 * 商品信息
	 */
	List<CartItemVo> items;
	/**
	 * 商品数量
	 */
	private Integer countNum;
	/**
	 * 商品类型数量
	 */
	private Integer countType;
	/**
	 * 商商品总价
	 */
	private BigDecimal totalAmount;
	/**
	 * 优惠价格
	 */
	private BigDecimal reduce = new BigDecimal("0.00");


	public List<CartItemVo> getItems() {
		return items;
	}

	public void setItems(List<CartItemVo> items) {
		this.items = items;
	}


	/**
	 * 计算购物车的商品总数量
	 *
	 * @return
	 */
	public Integer getCountNum() {
		int count = 0;
		if (!CollectionUtils.isEmpty(items)) {
			for (CartItemVo item : items) {
				if (item.getCheck()) {
					count += item.getCount();
				}
			}
		}
		return count;
	}

	/**
	 * 购物车中的商品类型数量
	 *
	 * @return
	 */
	public Integer getCountType() {
		int count = 0;
		if (!CollectionUtils.isEmpty(items)) {
			for (CartItemVo item : items) {
				count += 1;
			}
		}
		return count;
	}

	public BigDecimal getTotalAmount() {
		BigDecimal amount = new BigDecimal("0");
		// 计算购物项总价
		if (!CollectionUtils.isEmpty(items)) {
			for (CartItemVo item : items) {
				BigDecimal totalPrice = item.getTotalPrice();
				amount = amount.add(totalPrice);
			}
		}
		// 减免优惠价格
		BigDecimal subtract = amount.subtract(getReduce());
		return subtract;
	}

	public BigDecimal getReduce() {
		return reduce;
	}

	public void setReduce(BigDecimal reduce) {
		this.reduce = reduce;
	}
}
